package com.chenfeng.system.service.impl;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSONObject;
import com.chenfeng.common.util.PageInfoUtil;
import com.chenfeng.system.dao.IACateDao;
import com.chenfeng.system.dao.IARegionDao;
import com.chenfeng.system.pojo.ACate;
import com.chenfeng.system.pojo.ARegion;
import com.chenfeng.system.service.ISystemService;
@Service("iSystemService")
public class SystemServiceImpl implements ISystemService
{

	@Resource
	private IARegionDao regionDao;
	@Resource
	private IACateDao cateDao;
	/**
	 * 插入一条地区记录
	 */
	@Override
	public JSONObject insertOneRegion(ARegion region)
	{
		JSONObject resuJson = new JSONObject();
		//注释部分为测试事物回滚是否是正常的
		/*String str =null;
		str.toString();*/
		
		//返回值为影响的行数
		int majorKey = this.regionDao.insert(region);
		if(majorKey>0)
		{
			resuJson.put("code", "0");
			resuJson.put("info", "成功");
			//构建二级json 将主键存储在json对象中
			JSONObject date = new JSONObject();
			date.put("主键", region.getId());
			resuJson.put("date", date);
		}else
		{
			resuJson.put("code", "1");
			resuJson.put("info", "失败");
		}
		return resuJson;
	}
	/**
	 * 查找一条地区记录
	 */
	@Override
	public ARegion findOneRegion(Map<String, Object> map)
	{
		return this.regionDao.findOne(map);
	}
	/**
	 * mapper中的sql语句本质上还是分页与不分页（分页的情况下要进行两步走 第一总记录数 第二记录数）
	 * 查找多条地区记录
	 */
	@Override
	public List<ARegion> findCondListRegion(PageInfoUtil pageInfoUtil, Map<String, Object> map)
	{
		List<ARegion> regionList = Collections.EMPTY_LIST;
		//分页
		//true跟false在一一起判断
		if(map.get("keyword") != null)
		{
			map.put("keyword", "%"+map.get("keyword")+"%");
		}
		if(pageInfoUtil != null)
		{
			//获取总记录数
			map.put("pageCount", "true");
			regionList =  this.regionDao.findCondList(map);
			pageInfoUtil.setTotalRecord(regionList.get(0).getId());
			//开始分页
			map.put("pageCount", "false");
			map.put("currentRecord", pageInfoUtil.getCurrRecord());
			map.put("pageSize",pageInfoUtil.getPageSize());
			regionList =  this.regionDao.findCondList(map);
		}else
		//不分页	
		{
			regionList = this.regionDao.findCondList(map);
		}
		return regionList;
	}
	@Override
	public JSONObject updateOneRegion(ARegion region)
	{
		JSONObject resuJson = new JSONObject();	
		//返回值为影响的行数
		int majorKey = this.regionDao.update(region);
		if(majorKey>0)
		{
			resuJson.put("code", "0");
			resuJson.put("info", "更新成功");
		}else
		{
			resuJson.put("code", "1");
			resuJson.put("info", "更新失败");
		}
		return resuJson;
	}
	@Override
	public JSONObject deleteOneRegion(Map<String,Object> map)
	{
		JSONObject resuJson = new JSONObject();	
		//返回值为影响的行数
		int majorKey = this.regionDao.delete(map);
		if(majorKey>0)
		{
			resuJson.put("code", "0");
			resuJson.put("info", "删除成功");
		}else
		{
			resuJson.put("code", "1");
			resuJson.put("info", "删除失败");
		}
		return resuJson;
	}
	//==============================================分类=================================================
	 
	@Override
	public JSONObject insertOneCate(ACate region)
	{
		JSONObject resuJson = new JSONObject();
		//注释部分为测试事物回滚是否是正常的
		/*String str =null;
		str.toString();*/
		
		//返回值为影响的行数
		int majorKey = this.cateDao.insert(region);
		if(majorKey>0)
		{
			resuJson.put("code", "0");
			resuJson.put("info", "成功");
			//构建二级json 将主键存储在json对象中
			JSONObject date = new JSONObject();
			date.put("主键", region.getId());
			resuJson.put("date", date);
		}else
		{
			resuJson.put("code", "1");
			resuJson.put("info", "失败");
		}
		return resuJson;
	}
	/**
	 * 查找一条地区记录
	 */
	@Override
	public ACate findOneCate(Map<String, Object> map)
	{
		return this.cateDao.findOne(map);
	}
	/**
	 * mapper中的sql语句本质上还是分页与不分页（分页的情况下要进行两步走 第一总记录数 第二记录数）
	 * 查找多条地区记录
	 */
	@Override
	public List<ACate> findCondListCate(PageInfoUtil pageInfoUtil, Map<String, Object> map)
	{
		List<ACate> regionList = Collections.EMPTY_LIST;
		//分页
		//true跟false在一一起判断
		if(map.get("keyword") != null)
		{
			map.put("keyword", "%"+map.get("keyword")+"%");
		}
		if(pageInfoUtil != null)
		{
			//获取总记录数
			map.put("pageCount", "true");
			regionList =  this.cateDao.findCondList(map);
			pageInfoUtil.setTotalRecord(regionList.get(0).getId());
			//开始分页
			map.put("pageCount", "false");
			map.put("currentRecord", pageInfoUtil.getCurrRecord());
			map.put("pageSize",pageInfoUtil.getPageSize());
			regionList =  this.cateDao.findCondList(map);
		}else
		//不分页	
		{
			regionList = this.cateDao.findCondList(map);
		}
		return regionList;
	}
	@Override
	public JSONObject updateOneCate(ACate cate)
	{
		JSONObject resuJson = new JSONObject();	
		//返回值为影响的行数
		int majorKey = this.cateDao.update(cate);
		if(majorKey>0)
		{
			resuJson.put("code", "0");
			resuJson.put("info", "更新成功");
		}else
		{
			resuJson.put("code", "1");
			resuJson.put("info", "更新失败");
		}
		return resuJson;
	}
	@Override
	public JSONObject deleteOneCate(Map<String,Object> map)
	{
		JSONObject resuJson = new JSONObject();	
		//返回值为影响的行数
		int majorKey = this.cateDao.delete(map);
		if(majorKey>0)
		{
			resuJson.put("code", "0");
			resuJson.put("info", "删除成功");
		}else
		{
			resuJson.put("code", "1");
			resuJson.put("info", "删除失败");
		}
		return resuJson;
	}
}
